package com.chan.domain;

import com.chan.common.annotation.Excel;
import com.chan.common.annotation.Excels;
import com.chan.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;


/**
 * 交付清单对象 cd_program_pay_note
 *
 * @author chan
 * @date 2024-04-30
 */
public class CdProgramPayNote extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /**  */
    private Long id;

    /** 关联ID */
    @Excel(name = "项目ID")
    private Long relateId;

    /** 项目对象 */
    @Excels({
            @Excel(name = "项目名称", targetAttr = "name", type = Excel.Type.EXPORT),
            @Excel(name = "项目负责人", targetAttr = "members", type = Excel.Type.EXPORT)
    })
    private CdProgram program;

    /** 交付单 */
    @Excel(name = "交付单")
    private String noteName;

    /** 描述 */
    @Excel(name = "描述")
    private String desc;

    /** 状态（1未开启、2进行中、3已完成、4待确认、5客户已确认） */
    @Excel(name = "状态", readConverterExp = "1=未开启,2进行中,3已完成,4待确认,5客户已确认")
    private Long status;

    /** 计划开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date planStartDate;

    /** 计划结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date planEndDate;

    /** 实际开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date actStartDate;

    /** 实际结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date actEndDate;

    public CdProgram getProgram() {
        return program;
    }

    public void setProgram(CdProgram program) {
        this.program = program;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setRelateId(Long relateId)
    {
        this.relateId = relateId;
    }

    public Long getRelateId()
    {
        return relateId;
    }
    public void setNoteName(String noteName)
    {
        this.noteName = noteName;
    }

    public String getNoteName()
    {
        return noteName;
    }
    public void setDesc(String desc)
    {
        this.desc = desc;
    }

    public String getDesc()
    {
        return desc;
    }
    public void setStatus(Long status)
    {
        this.status = status;
    }

    public Long getStatus()
    {
        return status;
    }
    public void setPlanStartDate(Date planStartDate)
    {
        this.planStartDate = planStartDate;
    }

    public Date getPlanStartDate()
    {
        return planStartDate;
    }
    public void setPlanEndDate(Date planEndDate)
    {
        this.planEndDate = planEndDate;
    }

    public Date getPlanEndDate()
    {
        return planEndDate;
    }
    public void setActStartDate(Date actStartDate)
    {
        this.actStartDate = actStartDate;
    }

    public Date getActStartDate()
    {
        return actStartDate;
    }
    public void setActEndDate(Date actEndDate)
    {
        this.actEndDate = actEndDate;
    }

    public Date getActEndDate()
    {
        return actEndDate;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("relateId", getRelateId())
            .append("noteName", getNoteName())
            .append("desc", getDesc())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
